【Redis】搭建主从集群 | 您所在的位置:网站首页 › redis 集群登录 › 【Redis】搭建主从集群 |
目录 集群结构 准备实例和配置 启动 开启主从关系 测试 集群结构我们搭建的主从集群结构如图: 共包含三个节点,一个主节点,两个从节点。 这里我们会在同一台虚拟机中开启3个redis实例,模拟主从集群,信息如下: IPPORT角色192.168.150.1017001master192.168.150.1017002slave192.168.150.1017003slave 准备实例和配置要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是 工作目录。 1)创建目录 我们创建三个文件夹,名字分别叫7001、7002、7003: # 进入/tmp目录 cd /tmp # 创建目录 mkdir 7001 7002 7003 如图: 2)恢复原始配置 修改redis-6.2.4/redis.conf文件,将其中的持久化模式改为默认的RDB模式,AOF保持关闭状态。 # 开启RDB # save "" save 3600 1 save 300 100 save 60 10000 # 关闭AOF appendonly no
3)拷贝配置文件到每个实例目录 然后将redis-6.2.4/redis.conf文件拷贝到三个目录中(在/tmp目录执行下列命令): # 方式一:逐个拷贝 cp redis-6.2.4/redis.conf 7001 cp redis-6.2.4/redis.conf 7002 cp redis-6.2.4/redis.conf 7003 # 方式二:管道组合命令,一键拷贝 echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.4/redis.conf 4)修改每个实例的端口、工作目录 修改每个文件夹内的配置文件,将端口分别修改为7001、7002、7003,将rdb文件保存位置都修改 为自己所在目录(在/tmp目录执行下列命令): sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/tmp\/7001\//g' 7001/redis.conf sed -i -e 's/6379/7002/g' -e 's/dir .\//dir \/tmp\/7002\//g' 7002/redis.conf sed -i -e 's/6379/7003/g' -e 's/dir .\//dir \/tmp\/7003\//g' 7003/redis.conf 5)修改每个实例的声明IP 虚拟机本身有多个IP,为了避免将来混乱,我们需要在redis.conf文件中指定每一个实例的绑定ip信 息,格式如下: # redis实例的声明 IP replica-announce-ip 192.168.88.160 每个目录都要改,我们一键完成修改(在/tmp目录执行下列命令): # 逐一执行 sed -i '1a replica-announce-ip 192.168.88.160' 7001/redis.conf sed -i '1a replica-announce-ip 192.168.88.160' 7002/redis.conf sed -i '1a replica-announce-ip 192.168.88.160' 7003/redis.conf # 或者一键修改 printf '%s\n' 7001 7002 7003 | xargs -I{} -t sed -i '1a replica-announce-ip 192.168.150.101' {}/redis.conf 启动为了方便查看日志,我们打开3个ssh窗口,分别启动3个redis实例,启动命令: # 第1个 redis-server 7001/redis.conf # 第2个 redis-server 7002/redis.conf # 第3个 redis-server 7003/redis.conf 启动后: 如果要一键停止,可以运行下面命令: printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown 开启主从关系现在三个实例还没有任何关系,要配置主从可以使用replicaof 或者slaveof(5.0以前)命令。 有临时和永久两种模式: 修改配置文件(永久生效) 在redis.conf中添加一行配置:slaveof 使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效): slaveof 注意:在5.0以后新增命令replicaof,与salveof效果一致。 这里我们为了演示方便,使用方式二。 通过redis-cli命令连接7002,执行下面命令: # 连接 7002 redis-cli -p 7002 # 执行slaveof slaveof 192.168.88.160 7001 通过redis-cli命令连接7003,执行下面命令: # 连接 7003 redis-cli -p 7003 # 执行slaveof slaveof 192.168.88.160 7001 然后连接 7001节点,查看集群状态: # 连接 7001 redis-cli -p 7001 # 查看状态 info replication 结果: 测试执行下列操作以测试: 利用redis-cli连接7001,执行set num 123 利用redis-cli连接7002,执行get num,再执行set num 666 利用redis-cli连接7003,执行get num,再执行set num 888 可以发现,只有在7001这个master节点上可以执行写操作,7002和7003这两个slave节点只能执行 读操作 |
CopyRight 2018-2019 实验室设备网 版权所有 |